package com.lishe.lishe.net;

import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

/**
 * Created by Bin
 * 网络请求统一放置类
 */

public interface NetAPI {

    /**
     * 示例：获取获取猜你喜欢商品接口数据
     */
    @GET("index1/youLove")
    Observable<ResponseBody> getYouLove(@Query("page") int page, @Query("pageSize") int pageSize);

    /**
     * 首页猜你喜欢
     * @param map
     * @return
     */
    @GET("indexV230/youLove")
    Observable<ResponseBody> getYouLove(@QueryMap Map<String, String> map);

    //获取点赞墙列表
    @FormUrlEncoded
    @POST("lshe.framework.excitation/api/appEncourage/eventList")
    Observable<ResponseBody> getGiveLikeList(@Field("token") String token, @Field("sign") String sign,
                                                                           @Field("pageNo") int pageNo, @Field("pageSize") int pageSize);
    //企业激励-点赞墙的banner
    @FormUrlEncoded
    @POST("Businesscircle/Encourage/bannerIndex")
    Observable<ResponseBody> getExcitionBanner(@Field("token") String token);

    //点赞墙消息列表接口
    @FormUrlEncoded
    @POST("lshe.framework.excitation/api/appEncourage/getMessageList")
    Observable<ResponseBody> getMessageList(@Field("token") String token, @Field("sign") String sign);

    //对点赞事件鼓励
    @FormUrlEncoded
    @POST("lshe.framework.excitation/api/appEncourage/hitEvent")
    Observable<ResponseBody> hitEvent(@Field("token") String token, @Field("sign") String sign,
                                                 @Field("eventId") String eventId);

    //取消对点赞事件鼓励
    @FormUrlEncoded
    @POST("lshe.framework.excitation/api/appEncourage/cancelHitEvent")
    Observable<ResponseBody> cancelHitEvent(@Field("token") String token, @Field("sign") String sign,
                                                       @Field("eventId") String eventId);

    /**
     * 充值中心获取充值面额数据
     */
    @FormUrlEncoded
    @POST("lshe.framework.protocol.http/api/pointActive/getAllPointActive?terminalType=APP")
    Observable<ResponseBody> getRechargeData();
    /**
     * 充值中心获取充值面额数据
     */
    @GET("indexV230/index")
    Observable<ResponseBody> getIndexData();

    /**
     * 查询微信支付后的状态
     * @return
     */
    @FormUrlEncoded
    @POST("Pay1/getPayResult")
    Observable<ResponseBody> getPayResult(@QueryMap Map<String, String> map);

    /**
     * 查询微信支付后的状态
     * @return
     */
    @FormUrlEncoded
    @POST("Pay1/getPayResult")
    Observable<ResponseBody> getUserInfo(@QueryMap Map<String, String> map);

    //我的订单信息接口数据
    @FormUrlEncoded
    @POST("userV230/getOrderList")
    Observable<ResponseBody> getOrderList(@Field("token") String token, @Field("status") String status, @Field("page") String page, @Field("pageSize") String pageSize);

    //取消订单
    @FormUrlEncoded
    @POST("Order/cancelOrder")
    Observable<ResponseBody> cancleOrder(@Field("token") String token, @Field("payment_id") String payment_id);

    //确认收货
    @FormUrlEncoded
    @POST("Order/confirmOrder")
    Observable<ResponseBody> confirmOrder(@Field("token") String token, @Field("payment_id") String payment_id);

    //购物车
    @FormUrlEncoded
    @POST("orderV230/cartList")
    Observable<ResponseBody> cartList(@Field("token") String token);

    //获取收货地址
    @FormUrlEncoded
    @POST("User/addrList")
    Observable<ResponseBody> getAddress(@Field("token") String token);

    //删除购物车商品
    @FormUrlEncoded
    @POST("OrderV230/delFromCart")
    Observable<ResponseBody> delFromCart(@Field("token") String token, @Field("cartId") String cartId);

    //增加、减少购物车商品
    @FormUrlEncoded
    @POST("OrderV230/opCart")
    Observable<ResponseBody> opCart(@Field("token") String token, @Field("cartId") String cartId, @Field("op") String op, @Field("num") String num);

    //提交订单
    @FormUrlEncoded
    @POST("Order2/order")
    Observable<ResponseBody> submitOrder(@Field("token") String token, @Field("itemList[]")  List<String> cartIds);

    //提交订单
    /**
     * shopIds	array	是	商铺ID
     itemIds	array	是	商品ID
     dlytmplIds	array	是	配送模板ID，取shop里的template_id字段
     postFees	array	是	运费
     skuIds	array	是	skuId
     cartIds	array	是	cart_id(购物车ID)
     totalPrice	float/double/string	是	订单应支付的积分对应的金额(即将订单应支付的积分除100传递过来)
     totalCashPrice	float/double	否	混合支付时应付的现金(积分和现金混合支付时将需要支付的现金金额传递过来，如果没有，就不用传了)
     couponCode	string	否	优惠券编码(如果没有使用优惠券，就不用传了)
     remark	array	否	备注
     token	string	是	token
     */
    @FormUrlEncoded
    @POST("Order2/addUserOrder")
    Observable<ResponseBody> addUserOrder(@Field("token") String token, @Field("shopIds[]")  List<String> shopIds,
                                          @Field("itemIds[]") List<String> itemIds, @Field("dlytmplIds[]")  List<String> dlytmplIds,
                                          @Field("postFees[]") List<String> postFees, @Field("skuIds[]")  List<String> skuIds,
                                          @Field("cartIds[]") List<String> cartIds, @Field("totalPrice") String totalPrice,
                                          @Field("couponCode") String couponCode);

    @FormUrlEncoded
    @POST("Pay/queryPayResult")
    /**
     * 查询支付结果
     * paymentId	是	string	支付单
     type	是	string	1支付宝，2微信
     status	否	int	0失败，1成功
     deviceId	是	string	手机识别码
     token	是	string	token
     */
    Observable<ResponseBody> queryPayResult(@Field("paymentId") String paymentId, @Field("type") String type,
                                                                    @Field("deviceId") String deviceId, @Field("token") String token);

    @FormUrlEncoded
    @POST("User/modifyDefAddr")
    Observable<ResponseBody> modifyDefAddr(@Field("token") String token, @Field("addrId") String addrId);

}